package generate

var controllerTemplate = `package controller

type {{.PrivateName}} struct {
}

// init{{.ModelName}}Controller 权限控制器初始化
func init{{.ModelName}}Controller(gin *gin.RouterGroup) {
	m := &middleware{}
	a := &{{.PrivateName}}{}

	//group := gin.Group("/{{.PrivateName}}")
	authedGroup := gin.Group("/{{.PrivateName}}", m.authedMiddleware())

	// 无需校验权限的请求
	// 需校验权限的请求
	authedGroup.POST("/pageList", a.pageList{{.ModelName}})
	authedGroup.POST("/add", a.add{{.ModelName}})
	authedGroup.POST("/delete", a.delete{{.ModelName}}ById)
	authedGroup.POST("/update", a.update{{.ModelName}}ById)
}

// add{{.ModelName}} 新增一个
func (a *{{.PrivateName}}) add{{.ModelName}}(c *gin.Context) {
	d := &dto.{{.ModelName}}AddDTO{}
	err := c.ShouldBind(d)
	if err != nil {
		utils.CheckError(c, err)
		return
	}
	{{.ModelName}}Service := &service.{{.ModelName}}Service{}
	err = {{.ModelName}}Service.{{.ModelName}}AddOne(d)
	if err != nil {
		utils.CheckError(c, err)
		return
	}
	utils.NewInfoResult(utils.Success).R(c, nil)
}

// delete{{.ModelName}}ById 删除一个
func (a *{{.PrivateName}}) delete{{.ModelName}}ById(c *gin.Context) {
	// 获取id
	ID := &dto.DeleteById{}
	err := c.ShouldBind(ID)
	if err != nil {
		utils.CheckError(c, err)
		return
	}
	if ID.Id == nil {
		utils.NewInfoResult(utils.ParamError).R(c, nil)
		return
	}
	i := *ID.Id
	{{.ModelName}}Service := &service.{{.ModelName}}Service{}
	err = {{.ModelName}}Service.{{.ModelName}}DelById(int(i))
	if err != nil {
		utils.CheckError(c, err)
		return
	}
	utils.NewInfoResult(utils.Success).R(c, nil)
}

// update{{.ModelName}}ById 更新一个
func (a *{{.PrivateName}}) update{{.ModelName}}ById(c *gin.Context) {
	d := &dto.{{.ModelName}}UpdateDTO{}
	err := c.ShouldBind(d)
	if err != nil {
		utils.CheckError(c, err)
		return
	}
	{{.ModelName}}Service := &service.{{.ModelName}}Service{}
	err = {{.ModelName}}Service.{{.ModelName}}UpdateById(d)
	if err != nil {
		utils.CheckError(c, err)
		return
	}
	utils.NewInfoResult(utils.Success).R(c, nil)
}

// pageList{{.ModelName}} 获取一个分页的列表
func (a *{{.PrivateName}}) pageList{{.ModelName}}(c *gin.Context) {
	param := &dto.{{.ModelName}}SelectDTO{}
	err := c.ShouldBind(param)
	if err != nil {
		return
	}
	{{.ModelName}}Service := &service.{{.ModelName}}Service{}
	var list any
	list, err = {{.ModelName}}Service.{{.ModelName}}PageList(param)
	if err != nil {
		utils.CheckError(c, err)
		return
	}
	utils.NewInfoResult(utils.Success).R(c, list)
}
`
